#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
文件清理脚本
去掉所有标点符号（逗号、分号）和换行符
"""

import re
import os

def clean_file(input_file, output_file=None):
    """
    清理文件内容，去掉标点符号和换行符
    
    Args:
        input_file (str): 输入文件路径
        output_file (str): 输出文件路径，如果为None则覆盖原文件
    """
    try:
        # 读取文件内容
        with open(input_file, 'r', encoding='utf-8') as f:
            content = f.read()
        
        # 去掉所有标点符号和换行符
        # 保留字母、数字和空格
        cleaned_content = re.sub(r'[^\w\s]', '', content)
        
        # 去掉所有空白字符（包括空格、制表符、换行符等）
        cleaned_content = re.sub(r'\s+', '', cleaned_content)
        
        # 确定输出文件路径
        if output_file is None:
            output_file = input_file
        
        # 写入清理后的内容
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(cleaned_content)
        
        print(f"文件清理完成: {input_file} -> {output_file}")
        print(f"原始文件大小: {len(content)} 字符")
        print(f"清理后文件大小: {len(cleaned_content)} 字符")
        
    except FileNotFoundError:
        print(f"错误: 找不到文件 {input_file}")
    except Exception as e:
        print(f"错误: {e}")

def clean_directory(directory_path, file_pattern=None):
    """
    清理目录下所有匹配的文件
    
    Args:
        directory_path (str): 目录路径
        file_pattern (str): 文件模式，如 "*.txt"
    """
    if not os.path.exists(directory_path):
        print(f"错误: 目录不存在 {directory_path}")
        return
    
    files_to_clean = []
    
    if file_pattern:
        import glob
        pattern = os.path.join(directory_path, file_pattern)
        files_to_clean = glob.glob(pattern)
    else:
        # 获取目录下所有文件
        for root, dirs, files in os.walk(directory_path):
            for file in files:
                files_to_clean.append(os.path.join(root, file))
    
    if not files_to_clean:
        print(f"在目录 {directory_path} 中没有找到要清理的文件")
        return
    
    print(f"找到 {len(files_to_clean)} 个文件需要清理:")
    for file_path in files_to_clean:
        print(f"  - {file_path}")
    
    # 询问用户是否继续
    response = input("\n是否继续清理这些文件? (y/n): ")
    if response.lower() != 'y':
        print("操作已取消")
        return
    
    # 清理文件
    for file_path in files_to_clean:
        clean_file(file_path)

if __name__ == "__main__":
    import sys
    
    if len(sys.argv) < 2:
        print("用法:")
        print("  清理单个文件: python clean_file.py <文件路径>")
        print("  清理目录下所有文件: python clean_file.py <目录路径> --all")
        print("  清理目录下特定类型文件: python clean_file.py <目录路径> --pattern '*.txt'")
        sys.exit(1)
    
    path = sys.argv[1]
    
    if os.path.isfile(path):
        # 清理单个文件
        clean_file(path)
    elif os.path.isdir(path):
        # 清理目录
        if len(sys.argv) > 2 and sys.argv[2] == "--all":
            clean_directory(path)
        elif len(sys.argv) > 3 and sys.argv[2] == "--pattern":
            pattern = sys.argv[3]
            clean_directory(path, pattern)
        else:
            print("清理目录需要指定 --all 或 --pattern 参数")
    else:
        print(f"错误: 路径不存在 {path}") 